import {errorMsg} from "./global";

const flag = new RegExp("[`._@@#~!$^&*()=|{}':;',\\[\\]<>《》/?~！#￥……&*——|{}【】‘；：”“'。，、？ ]");
const flag2Email = new RegExp("[`'',\\[\\]<>《》！￥……——|【】‘；：”“'。，、？ ]");

/**
 * @return {boolean}
 */
function Iterator(obj) {
    /*
       由于forEach无法通过return以及break结束循环
       因此使用throw来跳出循环，在forEach外层捕获结果即可
    * */
    try {
        Object.keys(obj).forEach(key => {
            let param = obj[key];
            if (param !== null && param !== undefined && param !== '' && param.length > 0 && param.indexOf(' ') === -1) {
                if (param instanceof Object) {
                    throw Iterator(param);
                } else {
                    if (key.indexOf("mail") !== -1) {
                        if (flag2Email.test(param)) {
                            errorMsg("请勿使用特殊符号");
                            throw false;
                        }
                    } else {
                        if (flag.test(param)) {
                            errorMsg("请勿使用特殊符号");
                            throw false;
                        }
                    }
                }
            } else throw false;
        })
    } catch (e) {
        return !!e;
    }
    return true;
}

export default (obj) => {
    return Iterator(obj);
}
